filterlistmodel: Make constructor transfer full
authorMatthias Clasen <mclasen@redhat.com>
Sun, 26 Jul 2020 19:55:44 +0000 (15:55 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 26 Jul 2020 22:04:40 +0000 (18:04 -0400)
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.

Update all callers.

18 files changed:
demos/constraint-editor/constraint-view.c
demos/gtk-demo/listview_settings.c
demos/gtk-demo/main.c
gtk/gtkcustompaperunixdialog.c
gtk/gtkdropdown.c
gtk/gtkfilterlistmodel.c
gtk/gtkpagesetupunixdialog.c
gtk/gtkprintunixdialog.c
gtk/inspector/object-tree.c
gtk/inspector/prop-list.c
tests/testcolumnview.c
tests/testlistview.c
testsuite/gtk/expression.c
testsuite/gtk/filter.c
testsuite/gtk/filterlistmodel-exhaustive.c
testsuite/gtk/filterlistmodel.c
testsuite/gtk/multiselection.c
testsuite/gtk/singleselection.c

index a3fbd447bfd3df84c44e9830b2c6e72ee22c4c7d..5c66bf9d419636226c40fe5e139a0485d6ec19ef 100644 (file)
@@ -179,14 +179,10 @@ constraint_view_init (ConstraintView *self)
   all_constraints = gtk_constraint_layout_observe_constraints (GTK_CONSTRAINT_LAYOUT (manager));
   filter = gtk_custom_filter_new (omit_internal, NULL, NULL);
   constraints = (GListModel *)gtk_filter_list_model_new (all_constraints, filter);
-  g_object_unref (filter);
-  g_object_unref (all_constraints);
 
   all_children = gtk_widget_observe_children (GTK_WIDGET (self));
   filter = gtk_custom_filter_new (omit_internal, NULL, NULL);
   children = (GListModel *)gtk_filter_list_model_new (all_children, filter);
-  g_object_unref (filter);
-  g_object_unref (all_children);
 
   list = g_list_store_new (G_TYPE_LIST_MODEL);
   g_list_store_append (list, children);
index 7dc55ada2fa9f77bc6febeb9111d084ce9adb859..9df0218f7c3a5044d5c42b3d6622514804ca40f4 100644 (file)
@@ -246,12 +246,8 @@ transform_settings_to_keys (GBinding     *binding,
   g_object_unref (store);
 
   filter = gtk_string_filter_new (gtk_property_expression_new (SETTINGS_TYPE_KEY, NULL, "name"));
-  filter_model = gtk_filter_list_model_new (G_LIST_MODEL (sort_model), filter);
-  g_object_unref (sort_model);
-
   g_set_object (&current_filter, filter);
-
-  g_object_unref (filter);
+  filter_model = gtk_filter_list_model_new (G_LIST_MODEL (sort_model), filter);
 
   selection_model = gtk_no_selection_new (G_LIST_MODEL (filter_model));
   g_object_unref (filter_model);
index 722ae6fa08baf3f80ef024fef3ebe369209624de..bc89b017d0a1531d14416949a49baef8e15dec46 100644 (file)
@@ -1145,6 +1145,7 @@ activate (GApplication *app)
   filter_model = gtk_filter_list_model_new (G_LIST_MODEL (treemodel), NULL);
   filter = gtk_custom_filter_new ((GtkCustomFilterFunc)demo_filter_by_name, filter_model, NULL);
   gtk_filter_list_model_set_filter (filter_model, filter);
+  g_object_unref (filter);
   search_entry = GTK_WIDGET (gtk_builder_get_object (builder, "search-entry"));
   g_signal_connect (search_entry, "search-changed", G_CALLBACK (demo_search_changed_cb), filter);
 
index 501331c99b4eb3fbb3da3fad8c6904e17ace9a1a..d16ae2e5cac435bb5dd66501a54caf479cec291e 100644 (file)
@@ -325,8 +325,6 @@ gtk_custom_paper_unix_dialog_init (GtkCustomPaperUnixDialog *dialog)
 
   filter = gtk_custom_filter_new (match_func, NULL, NULL);
   dialog->printer_list = G_LIST_MODEL (gtk_filter_list_model_new (full_list, filter));
-  g_object_unref (full_list);
-  g_object_unref (filter);
 
   dialog->custom_paper_list = g_list_store_new (GTK_TYPE_PAGE_SETUP);
   gtk_print_load_custom_papers (dialog->custom_paper_list);
index 7b169ba780c1a38cbed4a843af5a121b5842cd26..e28369850eea0a444a7fed5af3f4689bdc354f1a 100644 (file)
@@ -666,7 +666,7 @@ gtk_drop_down_set_model (GtkDropDown *self,
       GListModel *filter_model;
       GListModel *selection;
 
-      filter_model = G_LIST_MODEL (gtk_filter_list_model_new (model, NULL));
+      filter_model = G_LIST_MODEL (gtk_filter_list_model_new (g_object_ref (model), NULL));
       g_set_object (&self->filter_model, filter_model);
       g_object_unref (filter_model);
 
index a02ad57abfaa0c8855977c468d44010ae978227e..52d3c860d918b955e1b53caf4b3df8269e5a0935 100644 (file)
@@ -614,8 +614,8 @@ gtk_filter_list_model_init (GtkFilterListModel *self)
 
 /**
  * gtk_filter_list_model_new:
- * @model: (allow-none): the model to sort
- * @filter: (allow-none): filter or %NULL to not filter items
+ * @model: (allow-none) (transfer full): the model to sort, or %NULL
+ * @filter: (allow-none) (transfer full): filter or %NULL to not filter items
  *
  * Creates a new #GtkFilterListModel that will filter @model using the given
  * @filter.
@@ -636,6 +636,10 @@ gtk_filter_list_model_new (GListModel *model,
                          "filter", filter,
                          NULL);
 
+  /* consume the references */
+  g_clear_object (&model);
+  g_clear_object (&filter);
+
   return result;
 }
 
index 3964a1aa60ca81cc874035b06f997047867e56a1..e771570b64ad3ae2d75528b4e4401aaa8f203514 100644 (file)
@@ -324,8 +324,6 @@ gtk_page_setup_unix_dialog_init (GtkPageSetupUnixDialog *dialog)
 
   filter = gtk_custom_filter_new (match_func, NULL, NULL);
   dialog->printer_list = G_LIST_MODEL (gtk_filter_list_model_new (full_list, filter));
-  g_object_unref (full_list);
-  g_object_unref (filter);
 
   factory = gtk_signal_list_item_factory_new ();
   g_signal_connect (factory, "setup", G_CALLBACK (setup_printer_item), dialog);
index 3c88f4cc25395cbda5168b925e8e2bc87d9192c1..09e7c1ea8b8c4a2197a2311985e8325626fb8a8a 100644 (file)
@@ -830,7 +830,6 @@ gtk_print_unix_dialog_init (GtkPrintUnixDialog *dialog)
   gtk_multi_filter_append (GTK_MULTI_FILTER (filter), filter1);
 
   filtered = G_LIST_MODEL (gtk_filter_list_model_new (sorted, filter));
-  g_object_unref (filter);
 
   selection = G_LIST_MODEL (gtk_single_selection_new (filtered));
   gtk_single_selection_set_autoselect (GTK_SINGLE_SELECTION (selection), FALSE);
index bd2585b06b00ac5710efd2410c57d5ac46902431..3d86e116932ad1dbede4aa75c5e7c485af3ae665 100644 (file)
@@ -1151,8 +1151,7 @@ create_root_model (GdkDisplay *display)
   g_object_unref (special);
 
   filter = gtk_filter_list_model_new (NULL, NULL);
-  custom_filter = gtk_custom_filter_new (toplevel_filter_func,
-                                         display, NULL);
+  custom_filter = gtk_custom_filter_new (toplevel_filter_func, display, NULL);
   gtk_filter_list_model_set_filter (filter, custom_filter);
   gtk_filter_list_model_set_model (filter, gtk_window_get_toplevels ());
   g_list_store_append (list, filter);
index dab74e6a00ee5b7fae118f2375bbee73c9ce32e2..a5b12d9a52aaefd37fe68744f72962136f2cd623 100644 (file)
@@ -622,7 +622,7 @@ gtk_inspector_prop_list_set_object (GtkInspectorPropList *pl,
   if (GTK_IS_WIDGET (object))
     g_signal_connect_object (object, "destroy", G_CALLBACK (cleanup_object), pl, G_CONNECT_SWAPPED);
 
-  filtered = G_LIST_MODEL (gtk_filter_list_model_new (G_LIST_MODEL (store), pl->priv->filter));
+  filtered = G_LIST_MODEL (gtk_filter_list_model_new (G_LIST_MODEL (store), g_object_ref (pl->priv->filter)));
   sorted = gtk_sort_list_model_new (filtered, NULL);
   list = G_LIST_MODEL (gtk_no_selection_new (G_LIST_MODEL (sorted)));
 
@@ -635,7 +635,6 @@ gtk_inspector_prop_list_set_object (GtkInspectorPropList *pl,
   g_object_unref (list);
   g_object_unref (sorted);
   g_object_unref (filtered);
-  g_object_unref (store);
 
   return TRUE;
 }
index 95d298c2239fb94ea414dc8e4bd63c16f4a011f7..bf9fb83572be817a9c975c60cac35b80431d890b 100644 (file)
@@ -759,7 +759,6 @@ main (int argc, char *argv[])
   custom_filter = gtk_custom_filter_new (match_file, g_object_ref (search_entry), g_object_unref);
   filter = gtk_filter_list_model_new (G_LIST_MODEL (sort), custom_filter);
   g_signal_connect (search_entry, "search-changed", G_CALLBACK (search_changed_cb), custom_filter);
-  g_object_unref (custom_filter);
 
   gtk_column_view_set_model (GTK_COLUMN_VIEW (view), G_LIST_MODEL (filter));
 
@@ -771,7 +770,6 @@ main (int argc, char *argv[])
   gtk_box_append (GTK_BOX (vbox), statusbar);
 
   g_object_unref (filter);
-  g_object_unref (sort);
   g_object_unref (tree);
 
   list = gtk_list_view_new_with_factory (
index 54cbfb5506fb245ddaee09cadf362534b6d9bffe..a8b3cc84aac254abdcb6a7982927e97b36c8457a 100644 (file)
@@ -640,7 +640,6 @@ main (int argc, char *argv[])
   custom_filter = gtk_custom_filter_new (match_file, search_entry, NULL);
   filter = gtk_filter_list_model_new (G_LIST_MODEL (tree), custom_filter);
   g_signal_connect (search_entry, "search-changed", G_CALLBACK (search_changed_cb), custom_filter);
-  g_object_unref (custom_filter);
 
   selectionmodel = file_info_selection_new (G_LIST_MODEL (filter));
   g_object_unref (filter);
@@ -654,7 +653,6 @@ main (int argc, char *argv[])
   update_statusbar (GTK_STATUSBAR (statusbar));
   gtk_box_append (GTK_BOX (vbox), statusbar);
 
-  g_object_unref (tree);
   g_object_unref (selectionmodel);
 
   gtk_widget_show (win);
index d5a8a0780246c7fefa8aaf7d1eebe1921dbca0b1..45c5c1a1f227f018dc8f808f81aa6969eefbe7d9 100644 (file)
@@ -203,7 +203,7 @@ test_nested (void)
   filter = gtk_string_filter_new (NULL);
   gtk_string_filter_set_search (GTK_STRING_FILTER (filter), "word");
   list = G_LIST_MODEL (g_list_store_new (G_TYPE_OBJECT));
-  filtered = gtk_filter_list_model_new (list, filter);
+  filtered = gtk_filter_list_model_new (list, g_object_ref (filter));
 
   list_expr = gtk_object_expression_new (G_OBJECT (filtered));
   filter_expr = gtk_property_expression_new (GTK_TYPE_FILTER_LIST_MODEL, list_expr, "filter");
@@ -262,8 +262,6 @@ test_nested (void)
   g_assert_cmpint (counter, ==, 0);
 
   g_object_unref (filtered);
-  g_object_unref (list);
-  g_object_unref (filter);
   gtk_expression_unref (expr);
 }
 
@@ -292,7 +290,7 @@ test_nested_this_destroyed (void)
   filter = gtk_string_filter_new (NULL);
   gtk_string_filter_set_search (GTK_STRING_FILTER (filter), "word");
   list = G_LIST_MODEL (g_list_store_new (G_TYPE_OBJECT));
-  filtered = gtk_filter_list_model_new (list, filter);
+  filtered = gtk_filter_list_model_new (list, g_object_ref (filter));
 
   list_expr = gtk_object_expression_new (G_OBJECT (filtered));
   filter_expr = gtk_property_expression_new (GTK_TYPE_FILTER_LIST_MODEL, list_expr, "filter");
@@ -333,7 +331,6 @@ test_nested_this_destroyed (void)
   g_assert_cmpint (counter, ==, 0);
 
   g_object_unref (filtered);
-  g_object_unref (list);
   g_object_unref (filter);
   gtk_expression_unref (expr);
 }
@@ -492,11 +489,8 @@ test_bind_child (void)
                                       "filter");
 
   filter = gtk_string_filter_new (NULL);
-  child = gtk_filter_list_model_new (NULL, NULL);
-  gtk_filter_list_model_set_filter (child, filter);
+  child = gtk_filter_list_model_new (NULL, filter);
   target = gtk_filter_list_model_new (G_LIST_MODEL (child), NULL);
-  g_object_unref (child);
-  g_object_unref (filter);
 
   gtk_expression_bind (expr, target, "filter", child);
   g_assert_true (gtk_filter_list_model_get_filter (child) == gtk_filter_list_model_get_filter (target));
@@ -528,7 +522,7 @@ test_nested_bind (void)
   gtk_string_filter_set_search (GTK_STRING_FILTER (filter2), "sausage");
 
   list = G_LIST_MODEL (g_list_store_new (G_TYPE_OBJECT));
-  filtered = gtk_filter_list_model_new (list, filter2);
+  filtered = gtk_filter_list_model_new (list, g_object_ref (filter2));
 
   filter_expr = gtk_property_expression_new (GTK_TYPE_FILTER_LIST_MODEL,
                                              gtk_object_expression_new (G_OBJECT (filtered)),
@@ -566,7 +560,6 @@ test_nested_bind (void)
   g_object_unref (filter2);
   g_object_unref (filter3);
   g_object_unref (filtered);
-  g_object_unref (list);
 
   gtk_expression_unref (expr);
   gtk_expression_unref (filter_expr);
@@ -709,7 +702,6 @@ test_bind_object (void)
 
   gtk_expression_unref (expr);
   g_object_unref (model);
-  g_object_unref (store);
 }
 
 int
index 22498bf20caf7354b6c1e07785cfa44d1af30bbf..0a109e6fa3a14bfccc25e7b7011f2c2400ade85b 100644 (file)
@@ -189,7 +189,7 @@ new_model (guint      size,
 {
   GtkFilterListModel *result;
 
-  result = gtk_filter_list_model_new (G_LIST_MODEL (new_store (1, size, 1)), filter);
+  result = gtk_filter_list_model_new (g_object_ref (G_LIST_MODEL (new_store (1, size, 1))), g_object_ref (filter));
 
   return result;
 }
index 12b9bedb5555c7517b6d0c8ad0ea681b2dbbd522..317ac64c6901879c1738fca2f40951094218867c 100644 (file)
@@ -135,6 +135,10 @@ filter_list_model_new (GListModel *source,
   GListStore *check;
   guint i;
 
+  if (source)
+    g_object_ref (source);
+  if (filter)
+    g_object_ref (filter);
   model = gtk_filter_list_model_new (source, filter);
   check = g_list_store_new (G_TYPE_OBJECT);
   for (i = 0; i < g_list_model_get_n_items (G_LIST_MODEL (model)); i++)
index d0e55c57bfaf275108372938aa1e930495d96dda..c2ad5951740c3e372cfcf12696793b563d640e29 100644 (file)
@@ -167,8 +167,7 @@ new_model (guint               size,
     filter = gtk_custom_filter_new (filter_func, data, NULL);
   else
     filter = NULL;
-  result = gtk_filter_list_model_new (G_LIST_MODEL (new_store (1, size, 1)), filter);
-  g_clear_object (&filter);
+  result = gtk_filter_list_model_new (g_object_ref (G_LIST_MODEL (new_store (1, size, 1))), filter);
   changes = g_string_new ("");
   g_object_set_qdata_full (G_OBJECT(result), changes_quark, changes, free_changes);
   g_signal_connect (result, "items-changed", G_CALLBACK (items_changed), changes);
index 7d67f3ca3de283141ae55cc6d5cdf50516623676..3e3fa39c77dad1f4cfe4cb0cdc6b2b782425ee9a 100644 (file)
@@ -627,7 +627,7 @@ test_set_model (void)
   
   store = new_store (1, 5, 1);
   m1 = G_LIST_MODEL (store);
-  m2 = G_LIST_MODEL (gtk_slice_list_model_new (m1, 0, 3));
+  m2 = G_LIST_MODEL (gtk_slice_list_model_new (g_object_ref (m1), 0, 3));
   selection = new_model (store);
   assert_selection (selection, "");
   assert_selection_changes (selection, "");
index 90356345da34f52436c30e04600af89f307ad6ba..256506cb4e4f0af3901d01a645ee644a6b8e88b6 100644 (file)
@@ -653,7 +653,7 @@ test_set_model (void)
   
   store = new_store (1, 5, 1);
   m1 = G_LIST_MODEL (store);
-  m2 = G_LIST_MODEL (gtk_slice_list_model_new (m1, 0, 3));
+  m2 = G_LIST_MODEL (gtk_slice_list_model_new (g_object_ref (m1), 0, 3));
   selection = new_model (store, TRUE, TRUE);
   assert_selection (selection, "1");
   assert_selection_changes (selection, "");